/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package videorent;

import java.util.ArrayList;
import java.util.Iterator;

/** Representa a un cliente.
 *
 * @author dayi
 */
public class Cliente extends Persona {

    private Compra compra;

    public Cliente(int cedula, String nombre, String apellido, int telefono) {
        super(cedula, nombre, apellido, telefono);
        this.compra = new Compra();
    }

    public Cliente(int cedula, String nombre, String apellido, int telefono, Compra compra) {
        super(cedula, nombre, apellido, telefono);
        this.compra = compra;
    }

    public Compra getCompras() {
        return compra.clone();
    }

    public void setCompras(Compra compra) {
        this.compra = compra;
    }

    /**
     * Este metodo obtiene los articulos a comprar por un cliente.
     * @return Lista de articulos a comprar.
     */
    public ArrayList<Object> obtenerArticulosCompra() {
        // Obtenemos la compra del cliente
        Compra comp = this.getCompras();

        return comp.getArticulos();
    }

    /**
     * Este metodo elimina los articulos a comprar por un cliente una vez que este los haya pagado.
     */
    public void eliminarArticulosCompra() {
        // Obtenemos la compra del cliente
        Compra comp = this.getCompras();

        comp.setArticulos(new ArrayList<Object>());
        comp.setTotal(0);
        comp.setMontoEntregado(0);
    }

    /**
     * Este metodo guarda un articulo en la lista de articulos para comprar de un cliente.
     * @param articulo Articulo que se guarda en la lista de articulos para comprar.
     */
    public void guardarArticuloCompra(Articulo articulo) {
        ArrayList<Object> articulos = new ArrayList<Object>();

        // Obtenemos la compra del cliente
        Compra comp = this.compra;

        //Obtenemos la lista de articulos
        articulos = comp.getArticulos();

        //Agregamos un articulo
        articulos.add(articulo);

        comp.setArticulos(articulos);
    }

    /**
     * Este metodo obtiene el subtotal de los articulos de un cliente.
     * @return el total a pagar por los articulos a comprar.
     */
    public double obtenerSubtotal() {
        return this.compra.obtenerSubtotal();
    }
}
